跳到主要内容

绑定数据

例如,如果你有一个 teamName 属性绑定到场景中的文本运行,改变 teamName 的值会自动更新显示的文字。

你可以在编辑器或运行时更改属性值,从而创建能够根据每个用户动态变化的体验。

绑定并不局限于视觉属性。你可以在文件的很多地方绑定值,包括变换、动画速度、转换器值脚本输入过渡条件值 等。

这意味着同一份数据可以同时驱动场景中的行为、动画和逻辑,帮助所有内容保持同步。

绑定属性

下面的例子用视图模型中的 Number 属性 circleX 控制一个圆形的 X 位置。

绑定属性

  1. 选中圆形,右键点击 X 字段,然后选择 Data Bind
  2. Property 下拉菜单中选择 circleX

X 字段随后会以绿色高亮,表示它已经绑定到某个值。

圆形的水平位置现在由 circleX 属性驱动。只要属性值发生变化,圆形就会自动更新。

更新值

注意

如果字段出现黄色边框,说明绑定存在问题。

最常见的原因是属性类型与目标值不兼容。例如,元素的 X 位置只能绑定到 Number 属性。

预览绑定

默认情况下,只有状态机播放时,数据才会控制元素。

若要预览数据绑定后的值,请打开 Data Binding Preview Toggle

预览数据绑定

更新绑定

右键点击已绑定元素,然后选择 Update Bind

更新绑定

移除绑定

右键点击已绑定元素,然后选择 Unbind

移除绑定

绑定选项

每个绑定都有下面这些属性。

Property

目标连接到的视图模型属性。

属性字段

Path

绑定嵌套视图模型时,可能存在多个同名属性。

Path 用于决定绑定应该使用哪一个具体属性实例。

路径

另请参阅:绝对绑定与相对绑定

Bind Direction

默认情况下,视图模型属性(source)控制已绑定的元素或值(target),但绑定也可以反向工作。

Target to Source

启用 Target to Source 后,元素发生变化时会更新视图模型属性。

Target to source

示例:如果你有一段行走循环动画,并希望追踪头部上下移动时的精确 Y 位置,可以把头部的 Y 位置以 Target to Source 方式绑定到 headY。这样头部移动时,headY 属性会自动更新。

Bidirectional

视图模型属性变化会更新元素,元素变化也会更新视图模型属性。

双向数据绑定

多次点击 Bidirectional 切换按钮,会在 Bidirectional(优先 target 值)Bidirectional(优先 source 值) 之间循环。

少数情况下,source 与 target 可能同时变化。该设置决定冲突发生时保留哪一侧的值。

示例:构建跳棋游戏时,每个棋子的初始位置由 piecePositionXpiecePositionY 属性决定(source to target)。拖拽棋子时,棋子自身(target)又会更新这些属性(target to source)。

Bind Once

启用 Bind Once 后,绑定只会在场景开始或绑定创建时应用一次值。

Bind once

初始值应用后,source 或 target 的后续变化都会被忽略。

示例:创建粒子效果时,你可能希望每个粒子一开始获得随机旋转值。可以把粒子的旋转绑定到一个随机数属性,并启用 Bind Once。每个粒子会获得初始旋转值,但之后属性变化不会影响已存在粒子。

绝对绑定与相对绑定

默认情况下,新的数据绑定连接会创建为绝对绑定。

  • 绝对绑定:绑定指向视图模型层级中的某一个具体属性实例。
  • 相对绑定:绑定会在当前上下文中查找匹配名称的属性。